/* 建立本地存取器并以JSON格式保存在一个文件中 */
/* 防止重载 */
#ifndef _ACCESS_H_
#define _ACCESS_H_

#include <Arduino_JSON.h>
#include "LocalStorage.h"
#include "MD5_String.h"
#include <Arduino.h>

class Access {
private:
  Access();
  JSONVar KeyArray;//初始化便获取此值
  bool matchKey(const String &key, const String &value);  //比对本地存储的密钥
                                                          // 禁止拷贝构造和赋值
  Access(const Access &) = delete;
  Access &operator=(const Access &) = delete;
public:
  // 获取单例实例
  static Access &getInstance();

  void add(const String &username, const String &password);           //添加并去重
  String readkey(const String &username, const String &password);     //根据正确的用户名密码获取userkey值
  String changekey(const String &userkey);                            //根据用户的userkey值随机变换其值
  bool userMatching(const String &username, const String &password);  //获取本地用户名和密码比对结果
  bool keyMatching(const String &userkey);                            //获取本地密钥比对结果
  void del(const String &username);                                   //删除指定用户
};
/* 引入库就声明好类对象实例 */
#define access Access::getInstance()
#endif  //_ACCESS_H_